# 欢迎来到对抗路！！！
# 现在是北京时间: 2023/8/24 10:16
# Keep and you will win！！！
import json

from file_define import Record


# 顶层设计，定义规则
class FileReader(object):

    def read_data(self) -> list[Record]:
        """
        用于读取不同文件的数据  把文件每一行信息封装到 Record 中, 再把 Record 封装到 list 中
        :return: 文件的封装后的列表数据， 列表中每一个元素，代表文件的一行数据，每一行数据都封装到，Record 类对象中
        """
        pass


# 读取文本文件的类对象
class TextFileRead(FileReader):
    def __init__(self, path):
        """
        构造方法， 需要一个文件路径
        :param path: 文件路径
        """
        self.path = path

    def read_data(self) -> list[Record]:
        """
        子类复写父类方法，实现读取文件数据的功能
        :return: 文件数据的列表
        """
        record_list: list[Record] = []
        with open(self.path, 'r', encoding='UTF-8') as fp:
            for line in fp.readlines():
                line = line.strip()   # 取出最后的 '\n'
                data_list = line.split(',')
                record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])
                record_list.append(record)
        return record_list


class JsonFileReader(FileReader):
    def __init__(self, path):
        self.path = path

    def read_data(self) -> list[Record]:
        """
        读取json文件数据
        :return: json文件数据列表
        """
        record_list: list[Record] = []
        with open(self.path, 'r', encoding='UTF-8') as fp:
            json_data = json.loads(fp.read())
            # json 文件有多个数据
            if type(json_data) == list:
                for list_dict in json_data:
                    record = Record(list_dict['date'], list_dict['order_id'],
                                    int(list_dict['money']), list_dict['province'])
                    record_list.append(record)
            # json 文件有单个数据
            elif type(json_data) == dict:
                record = Record(json_data['date'], json_data['order_id'],
                                json_data['money'], json_data['province'])
                record_list.append(record)
        return record_list


if __name__ == '__main__':
    # text_file_read = TextFileRead("data/2011年1月销售数据.txt")
    # file_list = text_file_read.read_data()

    json_file_reader = JsonFileReader("data/2011年2月销售数据.json")
    json_list = json_file_reader.read_data()
    for i in json_list:
        print(i)


























